/**
 * 得到具体是哪个库下面的哪个表
 * 
 * 注意  1、一个库代表一个学校             --以 school_学校id 命名
 *       2、库里面一张表代表一个学生       --以 student_学生id 命名
 *       3、表里面一条数据代表一个位置点
 */
const mongoose = require('mongoose')

//保存所有的数据库连接  -  是动态添加连接进这个变量的
let allConnect = {};

/**
 * 返回学校位置数据库连接-这样我才能判断是那张表
 * @param {*} schoolId   --学校id
 * @param {*} studentId  --学生id
 */
let getSchoolModel = async (config) => {
    let dataBaseName = 'school_' + config.schoolId;
    let tableName = 'student_' + config.studentId;
    if (!allConnect[dataBaseName]) {
        let address = global.COM_CONFIG.dbAddress + dataBaseName + '?authSource=admin';
        allConnect[dataBaseName] = mongoose.createConnection(address, {
            useNewUrlParser: true,
            useUnifiedTopology: true
        });
    }
    let db = allConnect[dataBaseName];
    return db.model(tableName, config.schema, tableName);
};

/**
 * 返回公用的信息数据库连接
 * @param  dataBaseName   -哪一个数据库
 * @param  tableName      -哪一个表
 */
let getComModel = async (config) => {
    let dataBaseName = config.dataBase, tableName = config.tableName, schema = config.schema;
    if (!allConnect[dataBaseName]) {
        let address = global.COM_CONFIG.dbAddress + dataBaseName + '?authSource=admin';
        allConnect[dataBaseName] = mongoose.createConnection(address, {
            useNewUrlParser: true,
            useUnifiedTopology: true
        });
    }
    let db = allConnect[dataBaseName];
    return db.model(tableName, schema, tableName);
};


module.exports = {
    getSchoolModel: getSchoolModel,
    getComModel: getComModel
};